//引入发布订阅模式的文件
import "./utils/publish-subscription";
import "./utils/cookie";
import "./utils/setEditConfig";
// import "./utils/initAPI2";
import "./utils/ENV";
//引入errorFilter文件
// import "./utils/settings/initConsoleErrorFilter";
// import {reFreshUserInfo} from './utils/WXH/login.js'
import plugin from './utils/WXH/plugin.js'
import getConfigParams from "./utils/getConfig";
// import Localization from "./utils/ImgCompress/vue-install";
import initConfigParams from "./utils/settings/initInterface";
import "./utils/initFontSize";
import Vue from 'vue'
import App from './App'
import store from "./store";
import dragPlugin from "./helper/drag-plugin";
import "@/lib/css/mall.css";
import 'mint-ui/lib/style.css'
import VueLazyload from 'vue-lazyload';
import {showLoading, hideLoading, ins} from "./utils/loading";
import initRouter from "./utils/settings/initRouter";
Vue.use(VueLazyload, {
	loading: 'static/image/demo1.png',
	error: 'static/image/demo2.png',
});
import "./utils/gw/data";

Vue.use(dragPlugin);
// Vue.use(scter);
Vue.use(plugin);
Vue.config.productionTip = false

//基于传统的回调方法的实现
//请求接口
// let callback = () => {
// 	// console.log("请求到的接口", window.api);
// 	console.log("请求到的配置参数", JSON.parse(sessionStorage.getItem("configParams")));
// 	new Vue({
// 		el: '#app',
// 		router,
// 		store,
// 		template: '<App/>',
// 		components: { App }
// 	});
// 	hideLoading();
// }
// showLoading();
// initAPI(callback, callback);
// initAPI2(callback, callback);
// getConfigParams(callback);

//基于generator的实现
// let gen = init();
// function* init() {
// 	//先请求整个应用的配置参数
// 	yield getConfigParams(gen);
// 	console.log("请求到了配置参数");
// 	//请求完毕之后加载应用
// 	yield (() => {
// 		console.log("请求到的配置参数", JSON.parse(sessionStorage.getItem("configParams")));
// 		new Vue({
// 			el: '#app',
// 			router,
// 			store,
// 			template: '<App/>',
// 			components: { App }
// 		});
// 	})();
// }
// gen.next();
// let instance;
//基于async await的实现（本质还是generator的语法糖）
/*showLoading();*/
function shopIsClosed(state) {
	return !state;
}
async function init() {
	// await initInterface;
	let state = await initConfigParams();
	console.log("初始化完参数");
	// console.log("await initConfigParams--->window.manifest", window.manifest);
	// let state = await getConfigParams();
	let router = await initRouter(shopIsClosed(state));
	// console.log("请求到的配置参数", JSON.parse(sessionStorage.getItem("configParams")));
	new Vue({
		el: '#app',
		router,
		store,
		template: '<App/>',
		components: { App }
	});
	/*hideLoading();*/
}
init();
// export default instance;